﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Common;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using Microsoft.Practices.EnterpriseLibrary.Common;
using System.Configuration;
using Insifo.BE.Gen;

namespace Insifo.DL.Gen
{
    public class DLEmpleado : DLTransaction, IDLTransaccion<BEEmpleado>
    {
        #region  Members


        /// <summary>
        /// Método obtiene los Origenes de Datos Activos
        /// </summary>
        /// <returns>Devuelve un DataSet</returns>
        public DataSet Listar(BEEmpleado pbe)
        {
            DataSet ds = new DataSet();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());  
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Empleado_Listar");
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@ai_IdCompania", DbType.Int32, pbe.IdCompania);
                sqlDB.AddInParameter(dbCmd, "@as_EmpleadoNombre", DbType.String, pbe.EmpleadoNombre);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@ai_Pagina", DbType.Int32, pbe.Pagina);
                ds = sqlDB.ExecuteDataSet(dbCmd);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {   
                dbCmd.Dispose();
            }
            return ds;
        }

        /// <summary>
        /// Método obtiene los Origenes de Datos Activos
        /// </summary>
        /// <returns>Devuelve un DataSet</returns>
        public DataSet Listar_Sel(BEEmpleado pbe)
        {
            DataSet ds = new DataSet();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Empleado_Listar_Sel");
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@ai_IdCompania", DbType.Int32, pbe.IdCompania);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCentroCosto", DbType.Int32, pbe.IdCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdEmpleado", DbType.Int32, pbe.IdEmpleado);
                sqlDB.AddInParameter(dbCmd, "@ai_IdProyecto", DbType.Int32, pbe.IdProyecto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamentoTrabajo", DbType.Int32, pbe.IdDepartamentoTrabajo);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSucursal", DbType.Int32, pbe.IdSucursal);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGradoSalario", DbType.Int32, pbe.IdGradoSalario);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPuesto", DbType.Int32, pbe.IdPuesto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCargo", DbType.Int32, pbe.IdTipoPuesto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdAreaFuncional", DbType.Int32, pbe.IdAreaFuncional);
                sqlDB.AddInParameter(dbCmd, "@as_EmpleadoNombre", DbType.String, pbe.EmpleadoNombre);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionTrabajo", DbType.String, pbe.SituacionTrabajo);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@ai_Pagina", DbType.Int32, pbe.Pagina);
                
                ds = sqlDB.ExecuteDataSet(dbCmd);

            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                dbCmd.Dispose();
            }
            return ds;
        }

        /// <summary>
        /// Método obtiene Datos del Empleado
        /// </summary>
        /// <returns>Devuelve un DataSet</returns>
        /// 
        public BEEmpleado Obtener(BEEmpleado pbe)
        {
            BEEmpleado be = new BEEmpleado();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Empleado_Obtener");
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@ai_IdEmpleado", DbType.Int32, pbe.IdEmpleado);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdEmpleado = DBValue.Get<int>(reader, "IdEmpleado");
                        be.IdCompania = DBValue.Get<int>(reader, "IdCompania");
                        be.CiudadesResidencia = DBValue.Get<String>(reader, "CiudadesResidencia");
                        be.TipoTrabajador = DBValue.Get<String>(reader, "TipoTrabajador");
                        be.SituacionTrabajo = DBValue.Get<String>(reader, "SituacionTrabajo");
                        be.FechaSituacionTrabajo = DBValue.Get<DateTime>(reader, "FechaSituacionTrabajo") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaSituacionTrabajo");
                        be.IdMonedaPago = DBValue.Get<int>(reader, "IdMonedaPago");
                        be.TipoPago = DBValue.Get<String>(reader, "TipoPago");
                        be.TipoPension = DBValue.Get<String>(reader, "TipoPension");
                        be.Remuneracion = DBValue.Get<Decimal>(reader, "Remuneracion");
                        be.FechaInicioPension = DBValue.Get<DateTime>(reader, "FechaInicioPension") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaInicioPension");
                        be.IdAFP = DBValue.Get<int>(reader, "IdAFP");
                        be.NumeroAFP = DBValue.Get<String>(reader, "NumeroAFP");
                        be.IdBancoCTS = DBValue.Get<int>(reader, "IdBancoCTS");
                        be.TipoCuentaCTS = DBValue.Get<String>(reader, "TipoCuentaCTS");
                        be.IdMonedaCTS = DBValue.Get<int>(reader, "IdMonedaCTS");
                        be.NumeroCuentaCTS = DBValue.Get<String>(reader, "NumeroCuentaCTS");
                        be.TipoSeguroSalud = DBValue.Get<String>(reader, "TipoSeguroSalud");
                        be.PlanSeguroSalud = DBValue.Get<String>(reader, "PlanSeguroSalud");
                        be.NumeroCarnetSeguroSalud = DBValue.Get<String>(reader, "NumeroCarnetSeguroSalud");
                        be.IdPersonaSeguroSalud = DBValue.Get<int>(reader, "IdPersonaSeguroSalud");
                        be.IdTipoContrato = DBValue.Get<int>(reader, "IdTipoContrato");
                        be.FechaInicioContrato = DBValue.Get<DateTime>(reader, "FechaInicioContrato") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaInicioContrato");
                        be.FechaTerminoContrato = DBValue.Get<DateTime>(reader, "FechaTerminoContrato") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaTerminoContrato");
                        be.LocacionPago = DBValue.Get<String>(reader, "LocacionPago");
                        be.IdCentroCosto = DBValue.Get<int>(reader, "IdCentroCosto");
                        be.IdProyecto = DBValue.Get<int>(reader, "IdProyecto");
                        be.IdDepartamentoTrabajo = DBValue.Get<int>(reader, "IdDepartamentoTrabajo");
                        be.IdSucursal = DBValue.Get<int>(reader, "IdSucursal");
                        be.TipoPlanilla = DBValue.Get<String>(reader, "TipoPlanilla");
                        be.IdGradoSalario = DBValue.Get<int>(reader, "IdGradoSalario");
                        be.IdPuesto = DBValue.Get<Int32>(reader, "IdPuesto");
                        be.IdReclutamiento = DBValue.Get<int>(reader, "IdReclutamiento");
                        be.IdAreaFuncional = DBValue.Get<int>(reader, "IdAreaFuncional");
                        be.SeguroEssaludVida = DBValue.Get<String>(reader, "SeguroEssaludVida");
                        be.SeguroAccidenteTrabajo = DBValue.Get<String>(reader, "SeguroAccidenteTrabajo");
                        be.SCTRSalud = DBValue.Get<String>(reader, "SCTRSalud");
                        be.SCTRPension = DBValue.Get<String>(reader, "SCTRPension");
                        be.Pensionista = DBValue.Get<String>(reader, "Pensionista");
                        be.Discapacidad = DBValue.Get<String>(reader, "Discapacidad");
                        be.Sindicalizado = DBValue.Get<String>(reader, "Sindicalizado");
                        be.CodigoEstrato = DBValue.Get<String>(reader, "CodigoEstrato");
                        be.ClaseTrabajador = DBValue.Get<String>(reader, "ClaseTrabajador");
                        be.Estado = DBValue.Get<String>(reader, "Estado");
                        be.UsuarioCreacion = DBValue.Get<String>(reader, "UsuarioCreacion");
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");
                        be.UsuarioModificacion = DBValue.Get<String>(reader, "UsuarioModificacion");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                      
                        be.SujetoHorarioNocturno = DBValue.Get<String>(reader, "SujetoHorarioNocturno");
                        be.TipoRegimenLaboral = DBValue.Get<String>(reader, "TipoRegimenLaboral");
                        be.SujetoRegimen = DBValue.Get<String>(reader, "SujetoRegimen");
                        be.SujetoJornada = DBValue.Get<String>(reader, "SujetoJornada");
                        be.TipoHorario = DBValue.Get<String>(reader, "TipoHorario");
                        be.Renta5taExonerado = DBValue.Get<String>(reader, "Renta5taExonerado");
                        be.ConvenioDobleTributacion = DBValue.Get<String>(reader, "ConvenioDobleTributacion");
                        be.Domiciliado = DBValue.Get<String>(reader, "Domiciliado");
                        be.TipoMotivoCese = DBValue.Get<String>(reader, "TipoMotivoCese");
                        be.TipoPeriocidadPago = DBValue.Get<String>(reader, "TipoPeriocidadPago");
                        be.TipoMonedaPago = DBValue.Get<String>(reader, "TipoMonedaPago");
                        be.TipoBanco = DBValue.Get<String>(reader, "TipoBanco");
                        be.TipoCuenta = DBValue.Get<String>(reader, "TipoCuenta");
                        be.NumeroCuenta = DBValue.Get<String>(reader, "NumeroCuenta");
                        be.TipoBancoCTS = DBValue.Get<String>(reader, "TipoBancoCTS");
                        be.IdBanco = DBValue.Get<Int32>(reader, "IdBanco");
                        be.IdGrupoPlanilla = DBValue.Get<Int32>(reader, "IdGrupoPlanilla");
                        be.IdPerfilContable = DBValue.Get<Int32>(reader, "IdPerfilContable");
                        be.IdMonedaDeposito = DBValue.Get<Int32>(reader, "IdMonedaDeposito");
                        be.TipoCategoriaOcupacional = DBValue.Get<String>(reader, "TipoCategoriaOcupacional");
                        be.CategoriaOcupacional = DBValue.Get<String>(reader, "CategoriaOcupacional");
                        be.SituacionEspecial = DBValue.Get<String>(reader, "SituacionEspecial");
                        be.Estrato = DBValue.Get<String>(reader, "Estrato");
                        be.IdGradoSalarial = DBValue.Get<Int32>(reader, "IdGradoSalarial");
                        be.FechaInicioOperacion = DBValue.Get<DateTime>(reader, "FechaInicioOperacion") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaInicioOperacion");
                        be.FechaFinOcupacion = DBValue.Get<DateTime>(reader, "FechaFinOcupacion") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaFinOcupacion");
                        be.SistemaPrevisional = DBValue.Get<String>(reader, "SistemaPrevisional");
                        be.AdministracionPension = DBValue.Get<String>(reader, "AdministracionPension");
                        be.NumeroCUSSP = DBValue.Get<String>(reader, "NumeroCUSSP");
                        be.AfiliadoEPS = DBValue.Get<String>(reader, "AfiliadoEPS");
                        be.TipoEPS = DBValue.Get<String>(reader, "TipoEPS");
                        be.NumeroEPS = DBValue.Get<String>(reader, "NumeroEPS");
                        be.PlanEPS = DBValue.Get<String>(reader, "PlanEPS");
                        be.SeguroAccidente = DBValue.Get<String>(reader, "SeguroAccidente");
                        be.SeguroVidaLey = DBValue.Get<String>(reader, "SeguroVidaLey");
                        be.FechaInicio = DBValue.Get<DateTime>(reader, "FechaInicio") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaInicio");
                        be.SeguroEssaludLey = DBValue.Get<String>(reader, "SeguroEssaludLey");
                        be.TipoSCTRSalud = DBValue.Get<String>(reader, "TipoSCTRSalud");
                        be.TipoSCTRPension = DBValue.Get<String>(reader, "TipoSCTRPension");
                        be.NivelEducativo = DBValue.Get<String>(reader, "NivelEducativo");
                        be.GrupoSanguineo = DBValue.Get<String>(reader, "GrupoSanguineo");
                        be.SituacionDomicilio = DBValue.Get<String>(reader, "SituacionDomicilio");
                        be.DisponibilidadViaje = DBValue.Get<String>(reader, "DisponibilidadViaje");
                        be.DisponibilidadOtraResidencia = DBValue.Get<String>(reader, "DisponibilidadOtraResidencia");
                        be.TipoVisa = DBValue.Get<String>(reader, "TipoVisa");
                        be.FechaExpiracionVisa = DBValue.Get<DateTime>(reader, "FechaExpiracionVisa") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaExpiracionVisa");
                        be.FechaInicioVisa = DBValue.Get<DateTime>(reader, "FechaInicioVisa") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaInicioVisa");
                        be.IdLineaCarrera = DBValue.Get<Int32>(reader, "IdLineaCarrera");
                        be.ClaseOcupacion = DBValue.Get<string>(reader, "ClaseOcupacion");
                        be.CajaCompensacion = DBValue.Get<string>(reader, "CajaCompensacion");
                        be.RiesgoLaboral = DBValue.Get<string>(reader, "RiesgoLaboral");                        
                        be.FechaAfiliacion = DBValue.Get<DateTime>(reader, "FechaAfiliacion") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaAfiliacion");
                        be.ImpedimentoFisico = DBValue.Get<string>(reader, "ImpedimentoFisico");
                        be.DonanteOrgano = DBValue.Get<string>(reader, "DonanteOrgano");
                        be.FormacionProfesional = DBValue.Get<string>(reader, "FormacionProfesional");
                        be.RazonCese = DBValue.Get<string>(reader, "RazonCese");
                        be.FechaLiquidacion = DBValue.Get<DateTime>(reader, "FechaLiquidacion") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaLiquidacion");
                        be.FechaVencimientoSeguro = DBValue.Get<DateTime>(reader, "FechaVencimientoSeguro") == DateTime.MinValue ? (DateTime?)null : DBValue.Get<DateTime>(reader, "FechaVencimientoSeguro");
                        be.IdBaseOperativa = DBValue.Get<Int32>(reader, "IdBaseOperativa");
                        be.TipoComprometido = DBValue.Get<String>(reader, "TipoComprometido");
                        be.EsAbsorcion = DBValue.Get<String>(reader, "EsAbsorcion");

                        
                        //Foto del Empleado
                        object objFoto = reader["foto"];
                        if (objFoto is byte[])
                            be.Foto = (byte[])objFoto;
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }
        
        /// <summary>
        /// Método Inserta un Empleado
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BEEmpleado Insertar(BEEmpleado pbe)
        {
            BEEmpleado be = new BEEmpleado();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Empleado_Insertar");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdEmpleado", DbType.Int32, pbe.IdEmpleado);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCompania", DbType.Int32, pbe.IdCompania);
                sqlDB.AddInParameter(dbCmd, "@as_CiudadesResidencia", DbType.String, pbe.CiudadesResidencia);
                sqlDB.AddInParameter(dbCmd, "@as_TipoTrabajador", DbType.String, pbe.TipoTrabajador);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionTrabajo", DbType.String, pbe.SituacionTrabajo);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaSituacionTrabajo", DbType.DateTime, pbe.FechaSituacionTrabajo);
                sqlDB.AddInParameter(dbCmd, "@ai_IdMonedaPago", DbType.Int32, pbe.IdMonedaPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPago", DbType.String, pbe.TipoPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPension", DbType.String, pbe.TipoPension);
                sqlDB.AddInParameter(dbCmd, "@ad_Remuneracion", DbType.Decimal, pbe.Remuneracion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioPension", DbType.DateTime, pbe.FechaInicioPension);
                sqlDB.AddInParameter(dbCmd, "@ai_IdAFP", DbType.Int32, pbe.IdAFP);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroAFP", DbType.String, pbe.NumeroAFP);
                sqlDB.AddInParameter(dbCmd, "@ai_IdBancoCTS", DbType.Int32, pbe.IdBancoCTS);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCuentaCTS", DbType.String, pbe.TipoCuentaCTS);
                sqlDB.AddInParameter(dbCmd, "@ai_IdMonedaCTS", DbType.Int32, pbe.IdMonedaCTS);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCuentaCTS", DbType.String, pbe.NumeroCuentaCTS);
                sqlDB.AddInParameter(dbCmd, "@as_TipoSeguroSalud", DbType.String, pbe.TipoSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@as_PlanSeguroSalud", DbType.String, pbe.PlanSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCarnetSeguroSalud", DbType.String, pbe.NumeroCarnetSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPersonaSeguroSalud", DbType.Int32, pbe.IdPersonaSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@ai_IdTipoContrato", DbType.Int32, pbe.IdTipoContrato);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioContrato", DbType.DateTime, pbe.FechaInicioContrato);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaTerminoContrato", DbType.DateTime, pbe.FechaTerminoContrato);
                sqlDB.AddInParameter(dbCmd, "@as_LocacionPago", DbType.String, pbe.LocacionPago);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCentroCosto", DbType.Int32, pbe.IdCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdProyecto", DbType.Int32, pbe.IdProyecto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamentoTrabajo", DbType.Int32, pbe.IdDepartamentoTrabajo);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSucursal", DbType.Int32, pbe.IdSucursal);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPlanilla", DbType.String, pbe.TipoPlanilla);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGradoSalario", DbType.Int32, pbe.IdGradoSalario);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPuesto", DbType.Int32, pbe.IdPuesto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdReclutamiento", DbType.Int32, pbe.IdReclutamiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdAreaFuncional", DbType.Int32, pbe.IdAreaFuncional);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroEssaludVida", DbType.String, pbe.SeguroEssaludVida);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroAccidenteTrabajo", DbType.String, pbe.SeguroAccidenteTrabajo);
                sqlDB.AddInParameter(dbCmd, "@as_SCTRSalud", DbType.String, pbe.SCTRSalud);
                sqlDB.AddInParameter(dbCmd, "@as_SCTRPension", DbType.String, pbe.SCTRPension);
                sqlDB.AddInParameter(dbCmd, "@as_Pensionista", DbType.String, pbe.Pensionista);
                sqlDB.AddInParameter(dbCmd, "@as_Discapacidad", DbType.String, pbe.Discapacidad);
                sqlDB.AddInParameter(dbCmd, "@as_Sindicalizado", DbType.String, pbe.Sindicalizado);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoEstrato", DbType.String, pbe.CodigoEstrato);
                sqlDB.AddInParameter(dbCmd, "@as_ClaseTrabajador", DbType.String, pbe.ClaseTrabajador);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioCreacion", DbType.String, pbe.UsuarioCreacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdLineaCarrera", DbType.Int32, pbe.IdLineaCarrera);
                sqlDB.AddInParameter(dbCmd, "@aim_Foto", DbType.Binary, pbe.Foto);
                sqlDB.AddInParameter(dbCmd, "@as_SujetoHorarioNocturno", DbType.String, pbe.SujetoHorarioNocturno);
                sqlDB.AddInParameter(dbCmd, "@as_TipoRegimenLaboral", DbType.String, pbe.TipoRegimenLaboral);
                sqlDB.AddInParameter(dbCmd, "@as_SujetoRegimen", DbType.String, pbe.SujetoRegimen);
                sqlDB.AddInParameter(dbCmd, "@as_SujetoJornada", DbType.String, pbe.SujetoJornada);
                sqlDB.AddInParameter(dbCmd, "@as_TipoHorario", DbType.String, pbe.TipoHorario);
                sqlDB.AddInParameter(dbCmd, "@as_Renta5taExonerado", DbType.String, pbe.Renta5taExonerado);
                sqlDB.AddInParameter(dbCmd, "@as_ConvenioDobleTributacion", DbType.String, pbe.ConvenioDobleTributacion);
                sqlDB.AddInParameter(dbCmd, "@as_Domiciliado", DbType.String, pbe.Domiciliado);
                sqlDB.AddInParameter(dbCmd, "@as_TipoMotivoCese", DbType.String, pbe.TipoMotivoCese);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPeriocidadPago", DbType.String, pbe.TipoPeriocidadPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoMonedaPago", DbType.String, pbe.TipoMonedaPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoBanco", DbType.String, pbe.TipoBanco);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCuenta", DbType.String, pbe.TipoCuenta);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCuenta", DbType.String, pbe.NumeroCuenta);
                sqlDB.AddInParameter(dbCmd, "@as_TipoBancoCTS", DbType.String, pbe.TipoBancoCTS);
                sqlDB.AddInParameter(dbCmd, "@ai_IdBanco", DbType.Int32, pbe.IdBanco);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGrupoPlanilla", DbType.Int32, pbe.IdGrupoPlanilla);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPerfilContable", DbType.Int32, pbe.IdPerfilContable);
                sqlDB.AddInParameter(dbCmd, "@ai_IdMonedaDeposito", DbType.Int32, pbe.IdMonedaDeposito);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCategoriaOcupacional", DbType.String, pbe.TipoCategoriaOcupacional);
                sqlDB.AddInParameter(dbCmd, "@as_CategoriaOcupacional", DbType.String, pbe.CategoriaOcupacional);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionEspecial", DbType.String, pbe.SituacionEspecial);
                sqlDB.AddInParameter(dbCmd, "@as_Estrato", DbType.String, pbe.Estrato);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGradoSalarial", DbType.Int32, pbe.IdGradoSalarial);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioOperacion", DbType.DateTime, pbe.FechaInicioOperacion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaFinOcupacion", DbType.DateTime, pbe.FechaFinOcupacion);
                sqlDB.AddInParameter(dbCmd, "@as_SistemaPrevisional", DbType.String, pbe.SistemaPrevisional);
                sqlDB.AddInParameter(dbCmd, "@as_AdministracionPension", DbType.String, pbe.AdministracionPension);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCUSSP", DbType.String, pbe.NumeroCUSSP);
                sqlDB.AddInParameter(dbCmd, "@as_AfiliadoEPS", DbType.String, pbe.AfiliadoEPS);
                sqlDB.AddInParameter(dbCmd, "@as_TipoEPS", DbType.String, pbe.TipoEPS);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroEPS", DbType.String, pbe.NumeroEPS);
                sqlDB.AddInParameter(dbCmd, "@as_PlanEPS", DbType.String, pbe.PlanEPS);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroAccidente", DbType.String, pbe.SeguroAccidente);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroVidaLey", DbType.String, pbe.SeguroVidaLey);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicio", DbType.DateTime, pbe.FechaInicio);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroEssaludLey", DbType.String, pbe.SeguroEssaludLey);
                sqlDB.AddInParameter(dbCmd, "@as_TipoSCTRSalud", DbType.String, pbe.TipoSCTRSalud);
                sqlDB.AddInParameter(dbCmd, "@as_TipoSCTRPension", DbType.String, pbe.TipoSCTRPension);
                sqlDB.AddInParameter(dbCmd, "@as_NivelEducativo", DbType.String, pbe.NivelEducativo);
                sqlDB.AddInParameter(dbCmd, "@as_GrupoSanguineo", DbType.String, pbe.GrupoSanguineo);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionDomicilio", DbType.String, pbe.SituacionDomicilio);
                sqlDB.AddInParameter(dbCmd, "@as_DisponibilidadViaje", DbType.String, pbe.DisponibilidadViaje);
                sqlDB.AddInParameter(dbCmd, "@as_DisponibilidadOtraResidencia", DbType.String, pbe.DisponibilidadOtraResidencia);
                sqlDB.AddInParameter(dbCmd, "@as_TipoVisa", DbType.String, pbe.TipoVisa);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaExpiracionVisa", DbType.DateTime, pbe.FechaExpiracionVisa);                
                sqlDB.AddInParameter(dbCmd, "@as_ClaseOcupacion", DbType.String, pbe.ClaseOcupacion);                
                sqlDB.AddInParameter(dbCmd, "@as_CajaCompensacion", DbType.String, pbe.CajaCompensacion);
                sqlDB.AddInParameter(dbCmd, "@as_RiesgoLaboral", DbType.String, pbe.RiesgoLaboral);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaAfiliacion", DbType.DateTime, pbe.FechaAfiliacion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioVisa", DbType.DateTime, pbe.FechaInicioVisa);
                sqlDB.AddInParameter(dbCmd, "@as_ImpedimentoFisico", DbType.String, pbe.ImpedimentoFisico);
                sqlDB.AddInParameter(dbCmd, "@as_DonanteOrgano", DbType.String, pbe.DonanteOrgano);
                sqlDB.AddInParameter(dbCmd, "@as_FormacionProfesional", DbType.String, pbe.FormacionProfesional);
                sqlDB.AddInParameter(dbCmd, "@as_RazonCese", DbType.String, pbe.RazonCese);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaLiquidacion", DbType.DateTime, pbe.FechaLiquidacion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaVencimientoSeguro", DbType.DateTime, pbe.FechaVencimientoSeguro);
                sqlDB.AddInParameter(dbCmd, "@ai_IdBaseOperativa", DbType.Int32, pbe.IdBaseOperativa);
                sqlDB.AddInParameter(dbCmd, "@as_TipoComprometido", DbType.String, pbe.TipoComprometido);
                sqlDB.AddInParameter(dbCmd, "@as_EsAbsorcion", DbType.String, pbe.EsAbsorcion);
                

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdEmpleado = DBValue.Get<int>(reader, "IdEmpleado");
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Inserta un Empleado en Spring
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BEEmpleado InsertarSpring(BEEmpleado pbe)
        {
            BEEmpleado be = new BEEmpleado();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Empleado_Insertar_Spring");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdEmpleado", DbType.Int32, pbe.IdEmpleado);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCompania", DbType.Int32, pbe.IdCompania);
                sqlDB.AddInParameter(dbCmd, "@as_CiudadesResidencia", DbType.String, pbe.CiudadesResidencia);
                sqlDB.AddInParameter(dbCmd, "@as_TipoTrabajador", DbType.String, pbe.TipoTrabajador);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionTrabajo", DbType.String, pbe.SituacionTrabajo);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaSituacionTrabajo", DbType.DateTime, pbe.FechaSituacionTrabajo);
                sqlDB.AddInParameter(dbCmd, "@ai_IdMonedaPago", DbType.Int32, pbe.IdMonedaPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPago", DbType.String, pbe.TipoPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPension", DbType.String, pbe.TipoPension);
                sqlDB.AddInParameter(dbCmd, "@ad_Remuneracion", DbType.Decimal, pbe.Remuneracion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioPension", DbType.DateTime, pbe.FechaInicioPension);
                sqlDB.AddInParameter(dbCmd, "@ai_IdAFP", DbType.Int32, pbe.IdAFP);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroAFP", DbType.String, pbe.NumeroAFP);
                sqlDB.AddInParameter(dbCmd, "@ai_IdBancoCTS", DbType.Int32, pbe.IdBancoCTS);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCuentaCTS", DbType.String, pbe.TipoCuentaCTS);
                sqlDB.AddInParameter(dbCmd, "@ai_IdMonedaCTS", DbType.Int32, pbe.IdMonedaCTS);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCuentaCTS", DbType.String, pbe.NumeroCuentaCTS);
                sqlDB.AddInParameter(dbCmd, "@as_TipoSeguroSalud", DbType.String, pbe.TipoSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@as_PlanSeguroSalud", DbType.String, pbe.PlanSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCarnetSeguroSalud", DbType.String, pbe.NumeroCarnetSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPersonaSeguroSalud", DbType.Int32, pbe.IdPersonaSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@ai_IdTipoContrato", DbType.Int32, pbe.IdTipoContrato);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioContrato", DbType.DateTime, pbe.FechaInicioContrato);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaTerminoContrato", DbType.DateTime, pbe.FechaTerminoContrato);
                sqlDB.AddInParameter(dbCmd, "@as_LocacionPago", DbType.String, pbe.LocacionPago);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCentroCosto", DbType.Int32, pbe.IdCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdProyecto", DbType.Int32, pbe.IdProyecto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamentoTrabajo", DbType.Int32, pbe.IdDepartamentoTrabajo);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSucursal", DbType.Int32, pbe.IdSucursal);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPlanilla", DbType.String, pbe.TipoPlanilla);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGradoSalario", DbType.Int32, pbe.IdGradoSalario);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPuesto", DbType.Int32, pbe.IdPuesto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdReclutamiento", DbType.Int32, pbe.IdReclutamiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdAreaFuncional", DbType.Int32, pbe.IdAreaFuncional);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroEssaludVida", DbType.String, pbe.SeguroEssaludVida);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroAccidenteTrabajo", DbType.String, pbe.SeguroAccidenteTrabajo);
                sqlDB.AddInParameter(dbCmd, "@as_SCTRSalud", DbType.String, pbe.SCTRSalud);
                sqlDB.AddInParameter(dbCmd, "@as_SCTRPension", DbType.String, pbe.SCTRPension);
                sqlDB.AddInParameter(dbCmd, "@as_Pensionista", DbType.String, pbe.Pensionista);
                sqlDB.AddInParameter(dbCmd, "@as_Discapacidad", DbType.String, pbe.Discapacidad);
                sqlDB.AddInParameter(dbCmd, "@as_Sindicalizado", DbType.String, pbe.Sindicalizado);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoEstrato", DbType.String, pbe.CodigoEstrato);
                sqlDB.AddInParameter(dbCmd, "@as_ClaseTrabajador", DbType.String, pbe.ClaseTrabajador);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioCreacion", DbType.String, pbe.UsuarioCreacion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdLineaCarrera", DbType.Int32, pbe.IdLineaCarrera);
                sqlDB.AddInParameter(dbCmd, "@aim_Foto", DbType.Binary, pbe.Foto);
                sqlDB.AddInParameter(dbCmd, "@as_SujetoHorarioNocturno", DbType.String, pbe.SujetoHorarioNocturno);
                sqlDB.AddInParameter(dbCmd, "@as_TipoRegimenLaboral", DbType.String, pbe.TipoRegimenLaboral);
                sqlDB.AddInParameter(dbCmd, "@as_SujetoRegimen", DbType.String, pbe.SujetoRegimen);
                sqlDB.AddInParameter(dbCmd, "@as_SujetoJornada", DbType.String, pbe.SujetoJornada);
                sqlDB.AddInParameter(dbCmd, "@as_TipoHorario", DbType.String, pbe.TipoHorario);
                sqlDB.AddInParameter(dbCmd, "@as_Renta5taExonerado", DbType.String, pbe.Renta5taExonerado);
                sqlDB.AddInParameter(dbCmd, "@as_ConvenioDobleTributacion", DbType.String, pbe.ConvenioDobleTributacion);
                sqlDB.AddInParameter(dbCmd, "@as_Domiciliado", DbType.String, pbe.Domiciliado);
                sqlDB.AddInParameter(dbCmd, "@as_TipoMotivoCese", DbType.String, pbe.TipoMotivoCese);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPeriocidadPago", DbType.String, pbe.TipoPeriocidadPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoMonedaPago", DbType.String, pbe.TipoMonedaPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoBanco", DbType.String, pbe.TipoBanco);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCuenta", DbType.String, pbe.TipoCuenta);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCuenta", DbType.String, pbe.NumeroCuenta);
                sqlDB.AddInParameter(dbCmd, "@as_TipoBancoCTS", DbType.String, pbe.TipoBancoCTS);
                sqlDB.AddInParameter(dbCmd, "@ai_IdBanco", DbType.Int32, pbe.IdBanco);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGrupoPlanilla", DbType.Int32, pbe.IdGrupoPlanilla);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPerfilContable", DbType.Int32, pbe.IdPerfilContable);
                sqlDB.AddInParameter(dbCmd, "@ai_IdMonedaDeposito", DbType.Int32, pbe.IdMonedaDeposito);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCategoriaOcupacional", DbType.String, pbe.TipoCategoriaOcupacional);
                sqlDB.AddInParameter(dbCmd, "@as_CategoriaOcupacional", DbType.String, pbe.CategoriaOcupacional);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionEspecial", DbType.String, pbe.SituacionEspecial);
                sqlDB.AddInParameter(dbCmd, "@as_Estrato", DbType.String, pbe.Estrato);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGradoSalarial", DbType.Int32, pbe.IdGradoSalarial);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioOperacion", DbType.DateTime, pbe.FechaInicioOperacion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaFinOcupacion", DbType.DateTime, pbe.FechaFinOcupacion);
                sqlDB.AddInParameter(dbCmd, "@as_SistemaPrevisional", DbType.String, pbe.SistemaPrevisional);
                sqlDB.AddInParameter(dbCmd, "@as_AdministracionPension", DbType.String, pbe.AdministracionPension);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCUSSP", DbType.String, pbe.NumeroCUSSP);
                sqlDB.AddInParameter(dbCmd, "@as_AfiliadoEPS", DbType.String, pbe.AfiliadoEPS);
                sqlDB.AddInParameter(dbCmd, "@as_TipoEPS", DbType.String, pbe.TipoEPS);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroEPS", DbType.String, pbe.NumeroEPS);
                sqlDB.AddInParameter(dbCmd, "@as_PlanEPS", DbType.String, pbe.PlanEPS);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroAccidente", DbType.String, pbe.SeguroAccidente);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroVidaLey", DbType.String, pbe.SeguroVidaLey);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicio", DbType.DateTime, pbe.FechaInicio);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroEssaludLey", DbType.String, pbe.SeguroEssaludLey);
                sqlDB.AddInParameter(dbCmd, "@as_TipoSCTRSalud", DbType.String, pbe.TipoSCTRSalud);
                sqlDB.AddInParameter(dbCmd, "@as_TipoSCTRPension", DbType.String, pbe.TipoSCTRPension);
                sqlDB.AddInParameter(dbCmd, "@as_NivelEducativo", DbType.String, pbe.NivelEducativo);
                sqlDB.AddInParameter(dbCmd, "@as_GrupoSanguineo", DbType.String, pbe.GrupoSanguineo);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionDomicilio", DbType.String, pbe.SituacionDomicilio);
                sqlDB.AddInParameter(dbCmd, "@as_DisponibilidadViaje", DbType.String, pbe.DisponibilidadViaje);
                sqlDB.AddInParameter(dbCmd, "@as_DisponibilidadOtraResidencia", DbType.String, pbe.DisponibilidadOtraResidencia);
                sqlDB.AddInParameter(dbCmd, "@as_TipoVisa", DbType.String, pbe.TipoVisa);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioVisa", DbType.DateTime, pbe.FechaInicioVisa);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaExpiracionVisa", DbType.DateTime, pbe.FechaExpiracionVisa);
                sqlDB.AddInParameter(dbCmd, "@as_ClaseOcupacion", DbType.String, pbe.ClaseOcupacion);
                sqlDB.AddInParameter(dbCmd, "@as_CajaCompensacion", DbType.String, pbe.CajaCompensacion);
                sqlDB.AddInParameter(dbCmd, "@as_RiesgoLaboral", DbType.String, pbe.RiesgoLaboral);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaAfiliacion", DbType.DateTime, pbe.FechaAfiliacion);
                sqlDB.AddInParameter(dbCmd, "@as_RazonCese", DbType.String, pbe.RazonCese);
               
                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdEmpleado = DBValue.Get<int>(reader, "IdEmpleado");
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Inserta un Empleado en Spring tabla HR_Empleado
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BEEmpleado InsertarHREmpleadoSpring(BEEmpleado pbe)
        {
            BEEmpleado be = new BEEmpleado();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Empleado_Insertar_HR_Empleado_Spring");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdEmpleado", DbType.Int32, pbe.IdEmpleado);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPaisNacimiento", DbType.Int32, pbe.Persona.IdPaisNacimiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamentoNacimiento", DbType.Int32, pbe.Persona.IdDepartamentoNacimiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdProvinciaNacimiento", DbType.Int32, pbe.Persona.IdProvinciaNacimiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPaisExtranjero", DbType.Int32, pbe.Persona.IdPaisExtranjero);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamentoExtranjera", DbType.Int32, pbe.Persona.IdDepartamentoExtranjera);
                sqlDB.AddInParameter(dbCmd, "@ai_IdProvinciaExtranjero", DbType.Int32, pbe.Persona.IdProvinciaExtranjero);
                sqlDB.AddInParameter(dbCmd, "@as_DireccionExtranjero", DbType.String, pbe.Persona.DireccionExtranjero);
                sqlDB.AddInParameter(dbCmd, "@as_TelefonoExtranjero", DbType.String, pbe.Persona.TelefonoExtranjero);
                sqlDB.AddInParameter(dbCmd, "@as_CelularExtranjero", DbType.String, pbe.Persona.CelularExtranjero);
                sqlDB.AddInParameter(dbCmd, "@ai_IdTipoContrato", DbType.Int32, pbe.IdTipoContrato);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPuesto", DbType.Int32, pbe.IdPuesto);
                sqlDB.AddInParameter(dbCmd, "@as_Pensionista", DbType.String, pbe.Pensionista);
                sqlDB.AddInParameter(dbCmd, "@as_Discapacidad", DbType.String, pbe.Discapacidad);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicio", DbType.DateTime, pbe.FechaInicio);
                sqlDB.AddInParameter(dbCmd, "@as_GrupoSanguineo", DbType.String, pbe.GrupoSanguineo);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionDomicilio", DbType.String, pbe.SituacionDomicilio);
                sqlDB.AddInParameter(dbCmd, "@as_DisponibilidadViaje", DbType.String, pbe.DisponibilidadViaje);
                sqlDB.AddInParameter(dbCmd, "@as_ImpedimentoFisico", DbType.String, pbe.ImpedimentoFisico);
                sqlDB.AddInParameter(dbCmd, "@as_DonanteOrgano", DbType.String, pbe.DonanteOrgano);
                sqlDB.AddInParameter(dbCmd, "@as_PoseeAuto", DbType.String, pbe.Persona.PoseeAuto);
                sqlDB.AddInParameter(dbCmd, "@as_NombreEmergencia2", DbType.String, pbe.Persona.NombreEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_DireccionEmergencia2", DbType.String, pbe.Persona.DireccionEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_TelefonoEmergencia2", DbType.String, pbe.Persona.TelefonoEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_CelularEmergencia2", DbType.String, pbe.Persona.CelularEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_ParentescoEmergencia2", DbType.String, pbe.Persona.ParentescoEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioCreacion", DbType.String, pbe.UsuarioCreacion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaExpiracionLicencia", DbType.DateTime, pbe.Persona.FechaExpiracionLicencia);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdEmpleado = DBValue.Get<int>(reader, "IdEmpleado");
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Inserta un Empleado en Spring HR_Sueldos
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BEEmpleado InsertarHRSueldosSpring(BEEmpleado pbe)
        {
            BEEmpleado be = new BEEmpleado();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Empleado_Insertar_HR_Sueldos_Spring");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdEmpleado", DbType.Int32, pbe.IdEmpleado);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCompania", DbType.Int32, pbe.IdCompania);
                sqlDB.AddInParameter(dbCmd, "@as_TipoTrabajador", DbType.String, pbe.TipoTrabajador);
                sqlDB.AddInParameter(dbCmd, "@ai_IdMonedaPago", DbType.Int32, pbe.IdMonedaPago);
                sqlDB.AddInParameter(dbCmd, "@ad_Remuneracion", DbType.Decimal, pbe.Remuneracion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCentroCosto", DbType.Int32, pbe.IdCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamentoTrabajo", DbType.Int32, pbe.IdDepartamentoTrabajo);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSucursal", DbType.Int32, pbe.IdSucursal);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPlanilla", DbType.String, pbe.TipoPlanilla);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGradoSalario", DbType.Int32, pbe.IdGradoSalario);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPuesto", DbType.Int32, pbe.IdPuesto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdAreaFuncional", DbType.Int32, pbe.IdAreaFuncional);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoEstrato", DbType.String, pbe.CodigoEstrato);
                sqlDB.AddInParameter(dbCmd, "@as_ClaseTrabajador", DbType.String, pbe.ClaseTrabajador);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioCreacion", DbType.String, pbe.UsuarioCreacion);
                sqlDB.AddInParameter(dbCmd, "@as_TipoMotivoCese", DbType.String, pbe.TipoMotivoCese);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGrupoPlanilla", DbType.Int32, pbe.IdGrupoPlanilla);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPerfilContable", DbType.Int32, pbe.IdPerfilContable);
                sqlDB.AddInParameter(dbCmd, "@as_Estrato", DbType.String, pbe.Estrato);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicio", DbType.DateTime, pbe.FechaInicio);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaLiquidacion", DbType.DateTime, pbe.FechaLiquidacion);
                sqlDB.AddInParameter(dbCmd, "@as_RazonCese", DbType.String, pbe.RazonCese);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCategoriaOcupacional", DbType.String, pbe.TipoCategoriaOcupacional);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionTrabajo", DbType.String, pbe.SituacionTrabajo);


                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdEmpleado = DBValue.Get<int>(reader, "IdEmpleado");
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        //<summary>
         //Método Actualiza un Empleado
         //</summary>
         //<returns>Devuelve una entidad</returns>
        public BEEmpleado Actualizar(BEEmpleado pbe)
        {
            BEEmpleado be = new BEEmpleado();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Empleado_Actualizar");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdEmpleado", DbType.Int32, pbe.IdEmpleado);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCompania", DbType.Int32, pbe.IdCompania);
                sqlDB.AddInParameter(dbCmd, "@as_CiudadesResidencia", DbType.String, pbe.CiudadesResidencia);
                sqlDB.AddInParameter(dbCmd, "@as_TipoTrabajador", DbType.String, pbe.TipoTrabajador);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionTrabajo", DbType.String, pbe.SituacionTrabajo);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaSituacionTrabajo", DbType.DateTime, pbe.FechaSituacionTrabajo);
                sqlDB.AddInParameter(dbCmd, "@ai_IdMonedaPago", DbType.Int32, pbe.IdMonedaPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPago", DbType.String, pbe.TipoPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPension", DbType.String, pbe.TipoPension);
                sqlDB.AddInParameter(dbCmd, "@ad_Remuneracion", DbType.Decimal, pbe.Remuneracion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioPension", DbType.DateTime, pbe.FechaInicioPension);
                sqlDB.AddInParameter(dbCmd, "@ai_IdAFP", DbType.Int32, pbe.IdAFP);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroAFP", DbType.String, pbe.NumeroAFP);
                sqlDB.AddInParameter(dbCmd, "@ai_IdBancoCTS", DbType.Int32, pbe.IdBancoCTS);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCuentaCTS", DbType.String, pbe.TipoCuentaCTS);
                sqlDB.AddInParameter(dbCmd, "@ai_IdMonedaCTS", DbType.Int32, pbe.IdMonedaCTS);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCuentaCTS", DbType.String, pbe.NumeroCuentaCTS);
                sqlDB.AddInParameter(dbCmd, "@as_TipoSeguroSalud", DbType.String, pbe.TipoSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@as_PlanSeguroSalud", DbType.String, pbe.PlanSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCarnetSeguroSalud", DbType.String, pbe.NumeroCarnetSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPersonaSeguroSalud", DbType.Int32, pbe.IdPersonaSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@ai_IdTipoContrato", DbType.Int32, pbe.IdTipoContrato);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioContrato", DbType.DateTime, pbe.FechaInicioContrato);
                sqlDB.AddInParameter(dbCmd, "@as_LocacionPago", DbType.String, pbe.LocacionPago);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCentroCosto", DbType.Int32, pbe.IdCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdProyecto", DbType.Int32, pbe.IdProyecto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamentoTrabajo", DbType.Int32, pbe.IdDepartamentoTrabajo);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSucursal", DbType.Int32, pbe.IdSucursal);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPlanilla", DbType.String, pbe.TipoPlanilla);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGradoSalario", DbType.Int32, pbe.IdGradoSalario);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPuesto", DbType.Int32, pbe.IdPuesto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdReclutamiento", DbType.Int32, pbe.IdReclutamiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdAreaFuncional", DbType.Int32, pbe.IdAreaFuncional);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroEssaludVida", DbType.String, pbe.SeguroEssaludVida);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroAccidenteTrabajo", DbType.String, pbe.SeguroAccidenteTrabajo);
                sqlDB.AddInParameter(dbCmd, "@as_SCTRSalud", DbType.String, pbe.SCTRSalud);
                sqlDB.AddInParameter(dbCmd, "@as_SCTRPension", DbType.String, pbe.SCTRPension);
                sqlDB.AddInParameter(dbCmd, "@as_Pensionista", DbType.String, pbe.Pensionista);
                sqlDB.AddInParameter(dbCmd, "@as_Discapacidad", DbType.String, pbe.Discapacidad);
                sqlDB.AddInParameter(dbCmd, "@as_Sindicalizado", DbType.String, pbe.Sindicalizado);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoEstrato", DbType.String, pbe.CodigoEstrato);
                sqlDB.AddInParameter(dbCmd, "@as_ClaseTrabajador", DbType.String, pbe.ClaseTrabajador);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioModificacion", DbType.String, pbe.UsuarioModificacion);
                sqlDB.AddInParameter(dbCmd, "@aim_Foto", DbType.Binary, pbe.Foto);
                sqlDB.AddInParameter(dbCmd, "@as_SujetoHorarioNocturno", DbType.String, pbe.SujetoHorarioNocturno);
                sqlDB.AddInParameter(dbCmd, "@as_TipoRegimenLaboral", DbType.String, pbe.TipoRegimenLaboral);
                sqlDB.AddInParameter(dbCmd, "@as_SujetoRegimen", DbType.String, pbe.SujetoRegimen);
                sqlDB.AddInParameter(dbCmd, "@as_SujetoJornada", DbType.String, pbe.SujetoJornada);
                sqlDB.AddInParameter(dbCmd, "@as_TipoHorario", DbType.String, pbe.TipoHorario);
                sqlDB.AddInParameter(dbCmd, "@as_Renta5taExonerado", DbType.String, pbe.Renta5taExonerado);
                sqlDB.AddInParameter(dbCmd, "@as_ConvenioDobleTributacion", DbType.String, pbe.ConvenioDobleTributacion);
                sqlDB.AddInParameter(dbCmd, "@as_Domiciliado", DbType.String, pbe.Domiciliado);
                sqlDB.AddInParameter(dbCmd, "@as_TipoMotivoCese", DbType.String, pbe.TipoMotivoCese);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPeriocidadPago", DbType.String, pbe.TipoPeriocidadPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoMonedaPago", DbType.String, pbe.TipoMonedaPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoBanco", DbType.String, pbe.TipoBanco);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCuenta", DbType.String, pbe.TipoCuenta);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCuenta", DbType.String, pbe.NumeroCuenta);
                sqlDB.AddInParameter(dbCmd, "@as_TipoBancoCTS", DbType.String, pbe.TipoBancoCTS);
                sqlDB.AddInParameter(dbCmd, "@ai_IdBanco", DbType.Int32, pbe.IdBanco);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGrupoPlanilla", DbType.Int32, pbe.IdGrupoPlanilla);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPerfilContable", DbType.Int32, pbe.IdPerfilContable);
                sqlDB.AddInParameter(dbCmd, "@ai_IdMonedaDeposito", DbType.Int32, pbe.IdMonedaDeposito);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCategoriaOcupacional", DbType.String, pbe.TipoCategoriaOcupacional);
                sqlDB.AddInParameter(dbCmd, "@as_CategoriaOcupacional", DbType.String, pbe.CategoriaOcupacional);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionEspecial", DbType.String, pbe.SituacionEspecial);
                sqlDB.AddInParameter(dbCmd, "@as_Estrato", DbType.String, pbe.Estrato);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGradoSalarial", DbType.Int32, pbe.IdGradoSalarial);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioOperacion", DbType.DateTime, pbe.FechaInicioOperacion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaFinOcupacion", DbType.DateTime, pbe.FechaFinOcupacion);
                sqlDB.AddInParameter(dbCmd, "@as_SistemaPrevisional", DbType.String, pbe.SistemaPrevisional);
                sqlDB.AddInParameter(dbCmd, "@as_AdministracionPension", DbType.String, pbe.AdministracionPension);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCUSSP", DbType.String, pbe.NumeroCUSSP);
                sqlDB.AddInParameter(dbCmd, "@as_AfiliadoEPS", DbType.String, pbe.AfiliadoEPS);
                sqlDB.AddInParameter(dbCmd, "@as_TipoEPS", DbType.String, pbe.TipoEPS);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroEPS", DbType.String, pbe.NumeroEPS);
                sqlDB.AddInParameter(dbCmd, "@as_PlanEPS", DbType.String, pbe.PlanEPS);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroAccidente", DbType.String, pbe.SeguroAccidente);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroVidaLey", DbType.String, pbe.SeguroVidaLey);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicio", DbType.DateTime, pbe.FechaInicio);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroEssaludLey", DbType.String, pbe.SeguroEssaludLey);
                sqlDB.AddInParameter(dbCmd, "@as_TipoSCTRSalud", DbType.String, pbe.TipoSCTRSalud);
                sqlDB.AddInParameter(dbCmd, "@as_TipoSCTRPension", DbType.String, pbe.TipoSCTRPension);
                sqlDB.AddInParameter(dbCmd, "@as_NivelEducativo", DbType.String, pbe.NivelEducativo);
                sqlDB.AddInParameter(dbCmd, "@as_GrupoSanguineo", DbType.String, pbe.GrupoSanguineo);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionDomicilio", DbType.String, pbe.SituacionDomicilio);
                sqlDB.AddInParameter(dbCmd, "@as_DisponibilidadViaje", DbType.String, pbe.DisponibilidadViaje);
                sqlDB.AddInParameter(dbCmd, "@as_DisponibilidadOtraResidencia", DbType.String, pbe.DisponibilidadOtraResidencia);
                sqlDB.AddInParameter(dbCmd, "@as_TipoVisa", DbType.String, pbe.TipoVisa);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaExpiracionVisa", DbType.DateTime, pbe.FechaExpiracionVisa);
                sqlDB.AddInParameter(dbCmd, "@as_ClaseOcupacion", DbType.String, pbe.ClaseOcupacion);
                sqlDB.AddInParameter(dbCmd, "@as_CajaCompensacion", DbType.String, pbe.CajaCompensacion);
                sqlDB.AddInParameter(dbCmd, "@as_RiesgoLaboral", DbType.String, pbe.RiesgoLaboral);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaAfiliacion", DbType.DateTime, pbe.FechaAfiliacion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioVisa", DbType.DateTime, pbe.FechaInicioVisa);
                sqlDB.AddInParameter(dbCmd, "@as_ImpedimentoFisico", DbType.String, pbe.ImpedimentoFisico);
                sqlDB.AddInParameter(dbCmd, "@as_DonanteOrgano", DbType.String, pbe.DonanteOrgano);
                sqlDB.AddInParameter(dbCmd, "@as_FormacionProfesional", DbType.String, pbe.FormacionProfesional);
                sqlDB.AddInParameter(dbCmd, "@as_RazonCese", DbType.String, pbe.RazonCese);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaLiquidacion", DbType.DateTime, pbe.FechaLiquidacion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaVencimientoSeguro", DbType.DateTime, pbe.FechaVencimientoSeguro);
                sqlDB.AddInParameter(dbCmd, "@ai_IdBaseOperativa", DbType.Int32, pbe.IdBaseOperativa);
                sqlDB.AddInParameter(dbCmd, "@as_TipoComprometido", DbType.String, pbe.TipoComprometido);
                sqlDB.AddInParameter(dbCmd, "@as_EsAbsorcion", DbType.String, pbe.EsAbsorcion);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdEmpleado = DBValue.Get<Int32>(reader, "IdEmpleado");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }


        //<summary>
        //Método Actualiza un Empleado EmpleadoMast
        //</summary>
        //<returns>Devuelve una entidad</returns>
        public BEEmpleado ActualizarSpring(BEEmpleado pbe)
        {
            BEEmpleado be = new BEEmpleado();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Empleado_Actualizar_Spring");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdEmpleado", DbType.Int32, pbe.IdEmpleado);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCompania", DbType.Int32, pbe.IdCompania);
                sqlDB.AddInParameter(dbCmd, "@as_CiudadesResidencia", DbType.String, pbe.CiudadesResidencia);
                sqlDB.AddInParameter(dbCmd, "@as_TipoTrabajador", DbType.String, pbe.TipoTrabajador);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionTrabajo", DbType.String, pbe.SituacionTrabajo);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaSituacionTrabajo", DbType.DateTime, pbe.FechaSituacionTrabajo);
                sqlDB.AddInParameter(dbCmd, "@ai_IdMonedaPago", DbType.Int32, pbe.IdMonedaPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPago", DbType.String, pbe.TipoPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPension", DbType.String, pbe.TipoPension);
                sqlDB.AddInParameter(dbCmd, "@ad_Remuneracion", DbType.Decimal, pbe.Remuneracion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioPension", DbType.DateTime, pbe.FechaInicioPension);
                sqlDB.AddInParameter(dbCmd, "@ai_IdAFP", DbType.Int32, pbe.IdAFP);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroAFP", DbType.String, pbe.NumeroAFP);
                sqlDB.AddInParameter(dbCmd, "@ai_IdBancoCTS", DbType.Int32, pbe.IdBancoCTS);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCuentaCTS", DbType.String, pbe.TipoCuentaCTS);
                sqlDB.AddInParameter(dbCmd, "@ai_IdMonedaCTS", DbType.Int32, pbe.IdMonedaCTS);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCuentaCTS", DbType.String, pbe.NumeroCuentaCTS);
                sqlDB.AddInParameter(dbCmd, "@as_TipoSeguroSalud", DbType.String, pbe.TipoSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@as_PlanSeguroSalud", DbType.String, pbe.PlanSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCarnetSeguroSalud", DbType.String, pbe.NumeroCarnetSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPersonaSeguroSalud", DbType.Int32, pbe.IdPersonaSeguroSalud);
                sqlDB.AddInParameter(dbCmd, "@ai_IdTipoContrato", DbType.Int32, pbe.IdTipoContrato);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioContrato", DbType.DateTime, pbe.FechaInicioContrato);
                sqlDB.AddInParameter(dbCmd, "@as_LocacionPago", DbType.String, pbe.LocacionPago);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCentroCosto", DbType.Int32, pbe.IdCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdProyecto", DbType.Int32, pbe.IdProyecto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamentoTrabajo", DbType.Int32, pbe.IdDepartamentoTrabajo);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSucursal", DbType.Int32, pbe.IdSucursal);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPlanilla", DbType.String, pbe.TipoPlanilla);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGradoSalario", DbType.Int32, pbe.IdGradoSalario);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPuesto", DbType.Int32, pbe.IdPuesto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdReclutamiento", DbType.Int32, pbe.IdReclutamiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdAreaFuncional", DbType.Int32, pbe.IdAreaFuncional);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroEssaludVida", DbType.String, pbe.SeguroEssaludVida);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroAccidenteTrabajo", DbType.String, pbe.SeguroAccidenteTrabajo);
                sqlDB.AddInParameter(dbCmd, "@as_SCTRSalud", DbType.String, pbe.SCTRSalud);
                sqlDB.AddInParameter(dbCmd, "@as_SCTRPension", DbType.String, pbe.SCTRPension);
                sqlDB.AddInParameter(dbCmd, "@as_Pensionista", DbType.String, pbe.Pensionista);
                sqlDB.AddInParameter(dbCmd, "@as_Discapacidad", DbType.String, pbe.Discapacidad);
                sqlDB.AddInParameter(dbCmd, "@as_Sindicalizado", DbType.String, pbe.Sindicalizado);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoEstrato", DbType.String, pbe.CodigoEstrato);
                sqlDB.AddInParameter(dbCmd, "@as_ClaseTrabajador", DbType.String, pbe.ClaseTrabajador);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioModificacion", DbType.String, pbe.UsuarioModificacion);
                sqlDB.AddInParameter(dbCmd, "@aim_Foto", DbType.Binary, pbe.Foto);
                sqlDB.AddInParameter(dbCmd, "@as_SujetoHorarioNocturno", DbType.String, pbe.SujetoHorarioNocturno);
                sqlDB.AddInParameter(dbCmd, "@as_TipoRegimenLaboral", DbType.String, pbe.TipoRegimenLaboral);
                sqlDB.AddInParameter(dbCmd, "@as_SujetoRegimen", DbType.String, pbe.SujetoRegimen);
                sqlDB.AddInParameter(dbCmd, "@as_SujetoJornada", DbType.String, pbe.SujetoJornada);
                sqlDB.AddInParameter(dbCmd, "@as_TipoHorario", DbType.String, pbe.TipoHorario);
                sqlDB.AddInParameter(dbCmd, "@as_Renta5taExonerado", DbType.String, pbe.Renta5taExonerado);
                sqlDB.AddInParameter(dbCmd, "@as_ConvenioDobleTributacion", DbType.String, pbe.ConvenioDobleTributacion);
                sqlDB.AddInParameter(dbCmd, "@as_Domiciliado", DbType.String, pbe.Domiciliado);
                sqlDB.AddInParameter(dbCmd, "@as_TipoMotivoCese", DbType.String, pbe.TipoMotivoCese);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPeriocidadPago", DbType.String, pbe.TipoPeriocidadPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoMonedaPago", DbType.String, pbe.TipoMonedaPago);
                sqlDB.AddInParameter(dbCmd, "@as_TipoBanco", DbType.String, pbe.TipoBanco);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCuenta", DbType.String, pbe.TipoCuenta);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCuenta", DbType.String, pbe.NumeroCuenta);
                sqlDB.AddInParameter(dbCmd, "@as_TipoBancoCTS", DbType.String, pbe.TipoBancoCTS);
                sqlDB.AddInParameter(dbCmd, "@ai_IdBanco", DbType.Int32, pbe.IdBanco);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGrupoPlanilla", DbType.Int32, pbe.IdGrupoPlanilla);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPerfilContable", DbType.Int32, pbe.IdPerfilContable);
                sqlDB.AddInParameter(dbCmd, "@ai_IdMonedaDeposito", DbType.Int32, pbe.IdMonedaDeposito);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCategoriaOcupacional", DbType.String, pbe.TipoCategoriaOcupacional);
                sqlDB.AddInParameter(dbCmd, "@as_CategoriaOcupacional", DbType.String, pbe.CategoriaOcupacional);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionEspecial", DbType.String, pbe.SituacionEspecial);
                sqlDB.AddInParameter(dbCmd, "@as_Estrato", DbType.String, pbe.Estrato);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGradoSalarial", DbType.Int32, pbe.IdGradoSalarial);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioOperacion", DbType.DateTime, pbe.FechaInicioOperacion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaFinOcupacion", DbType.DateTime, pbe.FechaFinOcupacion);
                sqlDB.AddInParameter(dbCmd, "@as_SistemaPrevisional", DbType.String, pbe.SistemaPrevisional);
                sqlDB.AddInParameter(dbCmd, "@as_AdministracionPension", DbType.String, pbe.AdministracionPension);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroCUSSP", DbType.String, pbe.NumeroCUSSP);
                sqlDB.AddInParameter(dbCmd, "@as_AfiliadoEPS", DbType.String, pbe.AfiliadoEPS);
                sqlDB.AddInParameter(dbCmd, "@as_TipoEPS", DbType.String, pbe.TipoEPS);
                sqlDB.AddInParameter(dbCmd, "@as_NumeroEPS", DbType.String, pbe.NumeroEPS);
                sqlDB.AddInParameter(dbCmd, "@as_PlanEPS", DbType.String, pbe.PlanEPS);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroAccidente", DbType.String, pbe.SeguroAccidente);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroVidaLey", DbType.String, pbe.SeguroVidaLey);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicio", DbType.DateTime, pbe.FechaInicio);
                sqlDB.AddInParameter(dbCmd, "@as_SeguroEssaludLey", DbType.String, pbe.SeguroEssaludLey);
                sqlDB.AddInParameter(dbCmd, "@as_TipoSCTRSalud", DbType.String, pbe.TipoSCTRSalud);
                sqlDB.AddInParameter(dbCmd, "@as_TipoSCTRPension", DbType.String, pbe.TipoSCTRPension);
                sqlDB.AddInParameter(dbCmd, "@as_NivelEducativo", DbType.String, pbe.NivelEducativo);
                sqlDB.AddInParameter(dbCmd, "@as_GrupoSanguineo", DbType.String, pbe.GrupoSanguineo);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionDomicilio", DbType.String, pbe.SituacionDomicilio);
                sqlDB.AddInParameter(dbCmd, "@as_DisponibilidadViaje", DbType.String, pbe.DisponibilidadViaje);
                sqlDB.AddInParameter(dbCmd, "@as_DisponibilidadOtraResidencia", DbType.String, pbe.DisponibilidadOtraResidencia);
                sqlDB.AddInParameter(dbCmd, "@as_TipoVisa", DbType.String, pbe.TipoVisa);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicioVisa", DbType.DateTime, pbe.FechaInicioVisa);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaExpiracionVisa", DbType.DateTime, pbe.FechaExpiracionVisa);
                sqlDB.AddInParameter(dbCmd, "@as_ClaseOcupacion", DbType.String, pbe.ClaseOcupacion);
                sqlDB.AddInParameter(dbCmd, "@as_CajaCompensacion", DbType.String, pbe.CajaCompensacion);
                sqlDB.AddInParameter(dbCmd, "@as_RiesgoLaboral", DbType.String, pbe.RiesgoLaboral);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaAfiliacion", DbType.DateTime, pbe.FechaAfiliacion);
                sqlDB.AddInParameter(dbCmd, "@as_RazonCese", DbType.String, pbe.RazonCese);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdEmpleado = DBValue.Get<Int32>(reader, "IdEmpleado");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        //<summary>
        //Método Actualizar Spring HR_Empleado
        //</summary>
        //<returns>Devuelve una entidad</returns>
        public BEEmpleado ActualizarHREmpleadoSpring(BEEmpleado pbe)
        {
            BEEmpleado be = new BEEmpleado();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Empleado_Actualizar_HR_Empleado_Spring");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdEmpleado", DbType.Int32, pbe.IdEmpleado);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPaisNacimiento", DbType.Int32, pbe.Persona.IdPaisNacimiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamentoNacimiento", DbType.Int32, pbe.Persona.IdDepartamentoNacimiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdProvinciaNacimiento", DbType.Int32, pbe.Persona.IdProvinciaNacimiento);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPaisExtranjero", DbType.Int32, pbe.Persona.IdPaisExtranjero);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamentoExtranjera", DbType.Int32, pbe.Persona.IdDepartamentoExtranjera);
                sqlDB.AddInParameter(dbCmd, "@ai_IdProvinciaExtranjero", DbType.Int32, pbe.Persona.IdProvinciaExtranjero);
                sqlDB.AddInParameter(dbCmd, "@as_DireccionExtranjero", DbType.String, pbe.Persona.DireccionExtranjero);
                sqlDB.AddInParameter(dbCmd, "@as_TelefonoExtranjero", DbType.String, pbe.Persona.TelefonoExtranjero);
                sqlDB.AddInParameter(dbCmd, "@as_CelularExtranjero", DbType.String, pbe.Persona.CelularExtranjero);                                
                sqlDB.AddInParameter(dbCmd, "@ai_IdTipoContrato", DbType.Int32, pbe.IdTipoContrato);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPuesto", DbType.Int32, pbe.IdPuesto);
                sqlDB.AddInParameter(dbCmd, "@as_Pensionista", DbType.String, pbe.Pensionista);
                sqlDB.AddInParameter(dbCmd, "@as_Discapacidad", DbType.String, pbe.Discapacidad);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicio", DbType.DateTime, pbe.FechaInicio);
                sqlDB.AddInParameter(dbCmd, "@as_GrupoSanguineo", DbType.String, pbe.GrupoSanguineo);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionDomicilio", DbType.String, pbe.SituacionDomicilio);
                sqlDB.AddInParameter(dbCmd, "@as_DisponibilidadViaje", DbType.String, pbe.DisponibilidadViaje);
                sqlDB.AddInParameter(dbCmd, "@as_ImpedimentoFisico", DbType.String, pbe.ImpedimentoFisico);
                sqlDB.AddInParameter(dbCmd, "@as_DonanteOrgano", DbType.String, pbe.DonanteOrgano);
                sqlDB.AddInParameter(dbCmd, "@as_PoseeAuto", DbType.String, pbe.Persona.PoseeAuto);
                sqlDB.AddInParameter(dbCmd, "@as_NombreEmergencia2", DbType.String, pbe.Persona.NombreEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_DireccionEmergencia2", DbType.String, pbe.Persona.DireccionEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_TelefonoEmergencia2", DbType.String, pbe.Persona.TelefonoEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_CelularEmergencia2", DbType.String, pbe.Persona.CelularEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_ParentescoEmergencia2", DbType.String, pbe.Persona.ParentescoEmergencia2);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioModificacion", DbType.String, pbe.UsuarioCreacion);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaExpiracionLicencia", DbType.DateTime, pbe.Persona.FechaExpiracionLicencia);
				                
                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdEmpleado = DBValue.Get<Int32>(reader, "IdEmpleado");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        //<summary>
        //Método Actualizar Spring HR_Sueldos
        //</summary>
        //<returns>Devuelve una entidad</returns>
        public BEEmpleado ActualizarHRSueldosSpring(BEEmpleado pbe)
        {
            BEEmpleado be = new BEEmpleado();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Empleado_Actualizar_HR_Sueldos_Spring");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdEmpleado", DbType.Int32, pbe.IdEmpleado);
                sqlDB.AddInParameter(dbCmd, "@ai_Secuencia", DbType.Int32, pbe.Secuencia);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCompania", DbType.Int32, pbe.IdCompania);
                sqlDB.AddInParameter(dbCmd, "@as_TipoTrabajador", DbType.String, pbe.TipoTrabajador);
                sqlDB.AddInParameter(dbCmd, "@ai_IdMonedaPago", DbType.Int32, pbe.IdMonedaPago);
                sqlDB.AddInParameter(dbCmd, "@ad_Remuneracion", DbType.Decimal, pbe.Remuneracion);
                sqlDB.AddInParameter(dbCmd, "@ai_IdCentroCosto", DbType.Int32, pbe.IdCentroCosto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdDepartamentoTrabajo", DbType.Int32, pbe.IdDepartamentoTrabajo);
                sqlDB.AddInParameter(dbCmd, "@ai_IdSucursal", DbType.Int32, pbe.IdSucursal);
                sqlDB.AddInParameter(dbCmd, "@as_TipoPlanilla", DbType.String, pbe.TipoPlanilla);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGradoSalario", DbType.Int32, pbe.IdGradoSalario);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPuesto", DbType.Int32, pbe.IdPuesto);
                sqlDB.AddInParameter(dbCmd, "@ai_IdAreaFuncional", DbType.Int32, pbe.IdAreaFuncional);
                sqlDB.AddInParameter(dbCmd, "@as_CodigoEstrato", DbType.String, pbe.CodigoEstrato);
                sqlDB.AddInParameter(dbCmd, "@as_ClaseTrabajador", DbType.String, pbe.ClaseTrabajador);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioCreacion", DbType.String, pbe.UsuarioCreacion);
                sqlDB.AddInParameter(dbCmd, "@as_TipoMotivoCese", DbType.String, pbe.TipoMotivoCese);
                sqlDB.AddInParameter(dbCmd, "@ai_IdGrupoPlanilla", DbType.Int32, pbe.IdGrupoPlanilla);
                sqlDB.AddInParameter(dbCmd, "@ai_IdPerfilContable", DbType.Int32, pbe.IdPerfilContable);
                sqlDB.AddInParameter(dbCmd, "@as_Estrato", DbType.String, pbe.Estrato);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaInicio", DbType.DateTime, pbe.FechaInicio);
                sqlDB.AddInParameter(dbCmd, "@adt_FechaLiquidacion", DbType.DateTime, pbe.FechaLiquidacion);
                sqlDB.AddInParameter(dbCmd, "@as_RazonCese", DbType.String, pbe.RazonCese);
                sqlDB.AddInParameter(dbCmd, "@as_TipoCategoriaOcupacional", DbType.String, pbe.TipoCategoriaOcupacional);
                sqlDB.AddInParameter(dbCmd, "@as_SituacionTrabajo", DbType.String, pbe.SituacionTrabajo);

                
                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdEmpleado = DBValue.Get<Int32>(reader, "IdEmpleado");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        
         //<summary>
         //Método Elimina un Empleado
         //</summary>
         //<returns>Devuelve una entidad</returns>
        public BEEmpleado Eliminar(BEEmpleado pbe)
        {
            BEEmpleado be = new BEEmpleado();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Empleado_Eliminar");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdEmpleado", DbType.Int32, pbe.IdEmpleado);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioModificacion", DbType.String, pbe.UsuarioModificacion);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdEmpleado = DBValue.Get<Int32>(reader, "IdEmpleado");
      
                        //Error
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        //<summary>
        //Método Elimina un Empleado Spring
        //</summary>
        //<returns>Devuelve una entidad</returns>
        public BEEmpleado EliminarSpring(BEEmpleado pbe)
        {
            BEEmpleado be = new BEEmpleado();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Empleado_Eliminar_Spring");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdEmpleado", DbType.Int32, pbe.IdEmpleado);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioModificacion", DbType.String, pbe.UsuarioModificacion);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdEmpleado = DBValue.Get<Int32>(reader, "IdEmpleado");

                        //Error
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        #endregion  Members
    }
}
